package com.sheng.leetcode.year2023.month09.day01;

import org.junit.Test;

/**
 * @author by ls
 * @date 2023/9/1
 * <p>
 * 2240. 买钢笔和铅笔的方案数<p>
 * <p>
 * 给你一个整数 total ，表示你拥有的总钱数。同时给你两个整数 cost1 和 cost2 ，<p>
 * 分别表示一支钢笔和一支铅笔的价格。你可以花费你部分或者全部的钱，去买任意数目的两种笔。<p>
 * 请你返回购买钢笔和铅笔的 不同方案数目 。<p>
 * <p>
 * 示例 1：<p>
 * 输入：total = 20, cost1 = 10, cost2 = 5<p>
 * 输出：9<p>
 * 解释：一支钢笔的价格为 10 ，一支铅笔的价格为 5 。<p>
 * - 如果你买 0 支钢笔，那么你可以买 0 ，1 ，2 ，3 或者 4 支铅笔。<p>
 * - 如果你买 1 支钢笔，那么你可以买 0 ，1 或者 2 支铅笔。<p>
 * - 如果你买 2 支钢笔，那么你没法买任何铅笔。<p>
 * 所以买钢笔和铅笔的总方案数为 5 + 3 + 1 = 9 种。<p>
 * <p>
 * 示例 2：<p>
 * 输入：total = 5, cost1 = 10, cost2 = 10<p>
 * 输出：1<p>
 * 解释：钢笔和铅笔的价格都为 10 ，都比拥有的钱数多，所以你没法购买任何文具。所以只有 1 种方案：买 0 支钢笔和 0 支铅笔。<p>
 * <p>
 * 提示：<p>
 * 1 <= total, cost1, cost2 <= 10^6<p>
 */
public class LeetCode2240 {

    @Test
    public void test01() {
//        int total = 20, cost1 = 10, cost2 = 5;
//        int total = 5, cost1 = 10, cost2 = 10;
        int total = 100, cost1 = 1, cost2 = 1;
        System.out.println(new Solution().waysToBuyPensPencils(total, cost1, cost2));
    }
}

class Solution {
    public long waysToBuyPensPencils(int total, int cost1, int cost2) {
        long ans = 0;
        for (int i = 0; i <= total; i++) {
            if (total >= cost1 * i) {
                // 可以购买
                int sum = total - cost1 * i;
                ans += sum / cost2 + 1;
            } else {
                break;
            }
        }
        return ans;
    }
}
